// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const db = cloud.database()
const _ = db.command

/**
 * 发布帖子
 * @param {Object} event - 请求参数
 * @param {string} event.title - 帖子标题
 * @param {string} event.content - 帖子内容
 * @param {Array} event.images - 图片列表
 * @param {string} event.category - 分类
 * @param {string} event.categoryName - 分类名称
 */
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const openid = wxContext.OPENID
  
  // 解构参数
  const { title, content, images = [], category, categoryName } = event
  
  // 参数校验
  if (!title || title.trim() === '') {
    return {
      success: false,
      error: '标题不能为空'
    }
  }
  
  if (!content || content.trim() === '') {
    return {
      success: false,
      error: '内容不能为空'
    }
  }
  
  try {
    // 检查内容安全性
    try {
      // 检查文本内容
      const textSecCheckResult = await cloud.callFunction({
        name: 'contentSec',
        data: {
          text: title + '\n' + content
        }
      })
      
      if (!textSecCheckResult.result.success) {
        return {
          success: false,
          error: '内容包含敏感信息，请修改后重试'
        }
      }
      
      // 检查图片内容
      if (images && images.length > 0) {
        for (let i = 0; i < images.length; i++) {
          const imgSecCheckResult = await cloud.callFunction({
            name: 'imagesec',
            data: {
              img: images[i]
            }
          })
          
          if (!imgSecCheckResult.result.success) {
            return {
              success: false,
              error: '图片包含敏感信息，请修改后重试'
            }
          }
        }
      }
    } catch (secErr) {
      console.error('内容安全检查失败', secErr)
      // 内容安全检查失败，继续执行
    }
    
    // 获取当前时间
    const now = new Date()
    const createTime = now.toISOString()
    
    // 添加帖子
    const addResult = await db.collection('forum_posts').add({
      data: {
        title,
        content,
        images,
        category,
        categoryName,
        authorId: openid,
        createTime,
        updateTime: createTime,
        likes: 0,
        comments: 0,
        views: 0,
        likedBy: [],
        collectedBy: []
      }
    })
    
    return {
      success: true,
      postId: addResult._id
    }
  } catch (err) {
    console.error('发布帖子失败', err)
    return {
      success: false,
      error: err
    }
  }
}